class Solution {
    public TreeNode pruneTree(TreeNode root) {
        return dfs(root);
    }
    //其实可以不用再写一个函数dfs，直接用上面的函数递归即可（因为函数头一样）
    public TreeNode dfs(TreeNode root) {
        //3.递归的出口
        if(root==null) {
            return null;
        }
        //2.1处理左子树
        root.left=dfs(root.left);
        //2.2处理右子树
        root.right=dfs(root.right);
        //2.3判断是否要删（注意要删的条件不只有root为0，左右子树还得为null）
        //为什么这个判断要在最后：因为本题的逻辑就是后序遍历
        if(root.left==null&&root.right==null&&root.val==0) {
            return null;
        } else {
            return root;
        }
    }
}